package com.recipedb.sprint.service;

import com.recipedb.sprint.entity.PointRecords;

import java.util.List;
import java.util.Map;
import java.util.Optional;

public interface PointRecordsService {

    /**
     * 获取用户所有积分及兑换记录列表
     */
    List<Map<String, Object>> getPointRecords(Long userid);

    /**
     * 查询单条积分或兑换记录详情
     */
    Map<String, Object> getRecordDetail(Long recordId);

    /**
     * 保存积分或兑换记录
     */
    PointRecords saveRecord(PointRecords record);

    /**
     * 按类型统计用户今日记录数量（用于限制每日奖励次数）
     */
    Long countTodayRecordsByType(Long userid, String sourceType);

    /**
     * 获取单条记录实体
     */
    Optional<PointRecords> getRecordById(Long recordId);

    /**
     * 生成其他积分变动记录
     */
    void recordPoints(Long userid, Integer pointsChange, String sourceType, Long relatedId, Integer quantity, String description);

    // 移除这个方法，因为现在由存储过程处理
    // void recordRedemption(Long userid, Long relatedId, Integer pointsChange, String description, Integer quantity);
}